/*
 * 
 */
package be.ipl.daoimpl;

import java.util.List;

import javax.ejb.Stateless;

import be.ipl.dao.PartieDao;
import be.ipl.domaine.Partie;
import be.ipl.domaine.Partie.Etat;


/**
 * The Class PartieDaoImpl.
 */
@SuppressWarnings("serial")
@Stateless
public class PartieDaoImpl extends DaoImpl<Integer, Partie> implements PartieDao{

	/* (non-Javadoc)
	 * @see be.ipl.dao.PartieDao#rechercherPartie(int)
	 */
	@Override
	public Partie rechercherPartie(int idPartie) {
		return recherche("select p from Partie p where p.id_partie = ", idPartie);
	}

	/* (non-Javadoc)
	 * @see be.ipl.dao.PartieDao#listerPartiesARejoindre()
	 */
	@Override
	public List<Partie> listerPartiesARejoindre() {
		return liste("Select p from Partie p where p.etat = ?1", Etat.EN_ATTENTE);
	}

	/* (non-Javadoc)
	 * @see be.ipl.dao.PartieDao#listerPartiesAReprendre(java.lang.String)
	 */
	@Override
	public List<Partie> listerPartiesAReprendre(String login) {
		return liste("Select p from Partie p JOIN p.tableaux t where p.etat = ?1 AND t.joueur.login = ?2", Etat.SUSPENDUE, login);
		
	}

	/**
	 * Charger jetons.
	 *
	 * @param partie the partie
	 * @return the partie
	 */
	public Partie chargerJetons(Partie partie){
		partie = recharger(partie.getId_partie());
		partie.getJetons().size();
		return partie;
	}
	
	/* (non-Javadoc)
	 * @see be.ipl.dao.PartieDao#chargerJetonsEtTableaux(be.ipl.domaine.Partie)
	 */
	public Partie chargerJetonsEtTableaux(Partie partie) {
		partie = chargerJetons(partie);
		partie = recharger(partie.getId_partie());
		partie.getTableaux().size();
		return partie;
	}
}
